Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.10.2014, 14:29
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

Передача полученных данных
Здравствуйте, есть скрипт которые принимает данные и отправляет на мыло
Вот отрезок кода js
$("#signup")["bind"]("click",function ()
	{
		var a=$("#cInpName")["val"](),b=$("#cInpPhone")["val"](),c=$("#cInpStreet")["val"](),f=$("#cInpHouse")["val"](),d=$("#cInpFloat")["val"](),g=$("#cInpComments")["val"]();
		if(1<b["length"])
		{
			var i=$(".basket_order .ajax_loader")["show"]();
			$["ajax"]({type:"POST",url:"send.php",data:{name:a,phone:b,street:c,house:f,"float":d,comments:g,basket:Basket["content"]},success:function ()
			{
				yaCounter["reachGoal"]("metrika_order");
				Basket.ShowBlock("message","Заказ отправлен","\x3Cp\x3EСпасибо за заказ!\x3C/p\x3E\x3Cp\x3EВ ближайшее время с вами свяжется оператор, для подтверждения заказа.\x3C/p\x3E",function ()
				{
					Basket.ShowBlock("basket");
					return !1
				}
				);
				Basket.Empty();
				i["hide"]();
			}
			});
		}
		else 
		{
			Basket.ShowBlock("message","Ошибка!","\x3Cp\x3EВы забыли указать номер мобильного телефона!\x3C/p\x3E",function ()
			{
				Basket.ShowBlock("order");
				return !1
			}
			);
		}
		return !1
	}
	);


и так в send.php
правильно ли я указал в php переменные которые передаются?
например phone
отрезок кода:
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];


но скрипт не отправляет я как понял не может найти send.php (он лежит в корне каталога, указывал в js и напрямую путь к send.php )

Собственно правильно ли я передаю переменные? И правильно ли я указал путь к send.php
Ответить с цитированием
  #2 (permalink)  
Старый 02.10.2014, 15:01
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А че все обфусцировано?
$phone = isset($_REQUEST['phone']) : $_REQUEST['phone'] : '';

Надо так, но дело не в этом.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 02.10.2014, 17:17
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

Сообщение от danik.js Посмотреть сообщение
А че все обфусцировано?
$phone = isset($_REQUEST['phone']) : $_REQUEST['phone'] : '';
занимаюсь не хорошим делом исключительно в целях любопытства
Сообщение от danik.js Посмотреть сообщение
Надо так, но дело не в этом.
может намекнете какие могут быть проблемы

Последний раз редактировалось soltx, 02.10.2014 в 17:28.
Ответить с цитированием
  #4 (permalink)  
Старый 02.10.2014, 17:44
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Путь перепроверь. Если в корне, пиши /send.php
Открой консоль - смотри на предмет ошибок, смотри вкладку Network - в ней смотри по нужному ли url'у запрос уходит, нужные ли поля отправляются, возвращает ли сервак 200 ОК (вдруг отдает 500 Internal Error)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 02.10.2014, 18:14
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

все спасибо! не хватало / и еще один вопрос, как передать массив basket?
Ответить с цитированием
  #6 (permalink)  
Старый 02.10.2014, 18:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Попробуй ...comments:g,'basket[]':Basket["content"]...

То есть вместо basket нужно 'basket[]'. Так php поймет что это массив.
Basket["content"] - это точно массив?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #7 (permalink)  
Старый 02.10.2014, 19:50
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

думаю да не ошибся что это массив

на почту приходит

<tr><td>Name</td><td>Василий</td></tr>
<tr><td>Phone</td><td>+7 (986) 776-86-78</td></tr>
<tr><td>Street</td><td>Пушкина</td></tr>
<tr><td>House</td><td>20</td></tr>
<tr><td>Comments</td><td>тест</td></tr>
<tr><td>Basket</td><td>Array</td></tr>


слегка сейчас изменен код js на

//Кнопка "заказать"
    $('#signup').bind('click', function(){
        var clName = $('#cInpName').val(),
            clPhone = $('#cInpPhone').val(),
            clStreet = $('#cInpStreet').val(),
            clHouse = $('#cInpHouse').val(),
            clFloat = $('#cInpFloat').val(),
            clComments = $('#cInpComments').val();
        if (clPhone.length > 1){
            var ajax_loader = $('.basket_order .ajax_loader').show();
            //Отправляем заказ
            $.ajax({
                type: "POST",
                url: "ajax/sendorder.html",
                data: {
                    name: clName,
                    phone: clPhone,
                    street: clStreet,
                    house: clHouse,
                    'float': clFloat,
                    comments: clComments,
                    basket: Basket.content
                },
                success: function(){
                  
                    Basket.ShowBlock('message', 'Заказ отправлен', '<p>Спасибо за заказ!</p><p>В ближайшее время с вами свяжется оператор, для подтверждения заказа.</p>',
                        function(){
                            Basket.ShowBlock('basket');
                            return false;
                        });
                    Basket.Empty();
                    ajax_loader.hide();
                }
            });
          
        }else{
            Basket.ShowBlock('message', 'Ошибка!', '<p>Вы забыли указать номер мобильного телефона!</p>', function(){
                Basket.ShowBlock('order');
                return false;
            });
        }
        return false;
    });



добавляю в php basket[] перестает работать
если в js
'basket[]': Basket.content

получаю <tr><td>Basket</td><td>Array</td></tr>

Последний раз редактировалось soltx, 02.10.2014 в 20:02.
Ответить с цитированием
  #8 (permalink)  
Старый 02.10.2014, 20:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Походу в php не правильно выводишь. Небось echo $basket, да? Нельзя так массив вывести.
Можешь echo implode(',', $basket)
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #9 (permalink)  
Старый 02.10.2014, 20:31
Кандидат Javascript-наук
Отправить личное сообщение для soltx Посмотреть профиль Найти все сообщения от soltx
 
Регистрация: 19.05.2013
Сообщений: 144

)) да методом тыка не решить надо учиться

вот код который выводил в php


<?php
//Retrieve form data. 
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$name = ($_GET['name']) ? $_GET['name'] : $_POST['name'];
$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];
$street = ($_GET['street']) ? $_GET['street'] : $_POST['street'];
$house = ($_GET['house']) ?$_GET['house'] : $_POST['house'];
$comments = ($_GET['comments']) ? $_GET['comments'] : $_POST['comments'];
$basket = ($_GET['basket']) ?$_GET['basket'] : $_POST['basket'];

//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post=1;

//Simple server side validation for POST data, of course, you should validate the email



//if the errors array is empty, send the mail
if (!$errors) {

	//recipient
	$to = 'Your Name <example@example.com>';	
	//sender
	$from = $name . ' <example@example.com>';
	
	//subject and the html message
	$subject = 'Заказ от ' . $name;	
	$message = '
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml">
	<head></head>
	<body>
	<table>
		<tr><td>Name</td><td>' . $name . '</td></tr>
		<tr><td>Phone</td><td>' . $phone . '</td></tr>
		<tr><td>Street</td><td>' . $street . '</td></tr>
		<tr><td>House</td><td>' . $house . '</td></tr>
		<tr><td>Comments</td><td>' . $comments . '</td></tr>
		<tr><td>Basket</td><td>' . $basket . '</td></tr>
		
	</table>
	</body>
	</html>';

	//send the mail
	$result = sendmail($to, $subject, $message, $from);
	
	//if POST was used, display the message straight away
	if ($_POST) {
		if ($result) echo 'Thank you! We have received your message.';
		else echo 'Sorry, unexpected error. Please try again later';
		
	//else if GET was used, return the boolean value so that 
	//ajax script can react accordingly
	//1 means success, 0 means failed
	} else {
		echo $result;	
	}

//if the errors array has values
} else {
	//display the errors message
	for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
	echo '<a href="/">Back</a>';
	exit;
}


//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
	$headers = "MIME-Version: 1.0" . "\r\n";
	$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
	$headers .= 'From: ' . $from . "\r\n";
	
	$result = mail($to,$subject,$message,$headers);
	
	if ($result) return 1;
	else return 0;
}
?>
Ответить с цитированием
  #10 (permalink)  
Старый 02.10.2014, 20:50
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

$phone = ($_GET['phone']) ?$_GET['phone'] : $_POST['phone'];

Это и остальное надо писать как
$phone = isset($_REQUEST['phone']) ?$_REQUEST['phone'] : '';

request содержит и post и get

if ($result) return 1;
else return 0;


Это проще записать как return (int) $result
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax передача данных с setInterval Segol Общие вопросы Javascript 0 07.07.2013 09:36
отправка данных из формы и вывод полученных данных sxe jQuery 2 21.05.2013 00:34
Двойная Фильтрация данных таблицы David0707 Общие вопросы Javascript 0 19.03.2012 13:00
Передача данных полученных из grid на сервер xalt ExtJS 5 22.09.2011 10:41
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52